﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication33
{
    class Program
    {
        static void Main(string[] args)
        {
            io plik = new io();
           List<Person> osoby= plik.wczytajklucze();
           List<Person> mezczyzni =new List<Person>();
           List<Person> kobiety = new List<Person>();


           for (int i = 0; i < osoby.Count/2; i++)
           {
               mezczyzni.Add(osoby[i]);
               kobiety.Add(osoby[osoby.Count / 2+i]);

           }
           bool wszyscymaja = false;
           while (wszyscymaja == false)
           {
               wszyscymaja = true;
               foreach (Person m in mezczyzni)
               {
                   if (m.partner == null)
                   {
                       while (m.partner == null)
                       {
                           if (kobiety[m.ulubione[m.ulubiona]].partner == null)
                           {
                               m.partner = kobiety[m.ulubione[m.ulubiona]];
                               kobiety[m.ulubione[m.ulubiona]].partner = m;
                           }
                           else
                           {
                               int obecny = kobiety[m.ulubione[m.ulubiona]].partner.index;
                               int mozliwy = m.index;

                               bool czy = false;

                               for (int i = 0; i < kobiety[m.ulubione[m.ulubiona]].ulubione.Length; i++)
                               {
                                   if (kobiety[m.ulubione[m.ulubiona]].ulubione[i] == obecny) i = kobiety[m.ulubione[m.ulubiona]].ulubione.Length + 2;
                                   else
                                   if (kobiety[m.ulubione[m.ulubiona]].ulubione[i] == mozliwy) { i = kobiety[m.ulubione[m.ulubiona]].ulubione.Length + 2; czy = true; }

                               }
                               if (czy == false)
                               {
                                   m.ulubiona++;
                               }
                               else
                               {
                                   kobiety[m.ulubione[m.ulubiona]].partner.partner = null;
                                   kobiety[m.ulubione[m.ulubiona]].partner = m;
                                   m.partner = kobiety[m.ulubione[m.ulubiona]];
                                   wszyscymaja = false;
                               }



                           }
                       }
                   }
               }
           }
            foreach(Person m in mezczyzni)
            {
                Console.WriteLine("Mezczyzna {0} jest z kobieta {1}", m.index, m.partner.index);
            }
            Console.ReadKey();

        }
    }
}
